import axios from 'axios'

// create an axios instance
// 1.baseURL 整个应用API的基地址
// 2.大数处理
// 3.接口最大超过时间
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})

// request interceptor
// --------------------token全局注入  token需要在很多地方用到   判断一下有没有token
// 为了其他接口方便携带token进行数据请求
service.interceptors.request.use(
  config => {
    // do something before request is sent
    // 在这里从本地取到token 然后放入 request Headers中
    // congfig   : axios封装对象  对象里面有一个重要的headers属性 请求头

    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)

// response interceptor
// 401token过期，跳转到登入页
// token续签 （token,refresh token）
// 当后端接口不是以常规的200状态码标识接口成功时，我们需要做额外的处理
service.interceptors.response.use(

  /**
   * If you want to get http information such as headers or status
   * Please return  response => response
  */

  /**
   * Determine the request status by custom code
   * Here is just an example
   * You can also judge the status by HTTP Status Code
   */
  response => {
    // http状态码200-300之间是成功

    return response
  },
  error => {
    return Promise.reject(error)
  }
)

export default service
